perm filename INIT.SAI[PNT,HE]2 blob sn#339114 filedate 1978-03-08 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	ENTRY
C00008 ENDMK
C⊗;
ENTRY;
BEGIN
REQUIRE "MACROS.SAI[PNT,HE]" SOURCE_FILE;
REQUIRE "RECORD.DEF[PNT,HE]" SOURCE_FILE;

EXTERNAL PROCEDURE AFX_NODE(RPTR(FRAME)N,D;INTEGER HOW);
EXTERNAL STRING $LINE,$NEXT,$TAIL,TOKEN;   
  			        ! $line is the line typed on tty;
				! $next is the part of $line to be parsed;
				! $tail is the part of instr. to be scanned until;
				! TOKEN is the last token read;

EXTERNAL INTEGER #TOKEN;	! type of last token read by gtoken;

EXTERNAL BOOLEAN STOKEN;	! true if the next token to be 
						  read is yet in TOKEN;
 
EXTERNAL REAL $EPS; 

EXTERNAL STRING  $TTYFL; 	! name of file for tty input;
EXTERNAL BOOLEAN $READ;			! true while reading from a file;
EXTERNAL INTEGER $TOTFL;	! number of files defined;
EXTERNAL STRING  $ALFL;		! last file used for output;
EXTERNAL INTEGER $ALLOW;				! when >0 no display updating;

EXTERNAL RPTR(SCALAR,VECTOR,ROT,TRANS,FRAME) PROCEDURE MK_REC(INTEGER TYPE);
EXTERNAL RPTR(SYMBOL) PROCEDURE ENSYM(STRING SYMB;INTEGER NM;RANY VAL);
EXTERNAL RPTR(TRANS) PROCEDURE DOTREXP(REAL W,PH,TH,X,Y,Z);

INTERNAL PROCEDURE INIT;
BEGIN;

	! some initializations;
	
	STOKEN←FALSE;

	$ALLOW←0;
	$READ←FALSE;			! used by readcode: true while reading;
	$TTYFL←NULL;
	$TOTFL←0;
	$ALFL←"DECLAR.AL";		! default name for input/output file;
	$EPS←0.001;

$ALLOW←$ALLOW+1;

	HANDB←ENSYM("BHAND",#SC,S_BHAND←MK_REC(#SC));
	HANDY←ENSYM("YHAND",#SC,S_YHAND←MK_REC(#SC));

	SCALAR:VALUE[SYMBOL:OBJECT[INCHES←ENSYM("INCHES",#SC,MK_REC(#SC))]]←1;
	SCALAR:VALUE[SYMBOL:OBJECT[INCH←ENSYM("INCH",#SC,MK_REC(#SC))]]←1;
	SCALAR:VALUE[SYMBOL:OBJECT[DEG←ENSYM("DEG",#SC,MK_REC(#SC))]]←1;
	SCALAR:VALUE[SYMBOL:OBJECT[DEGREE←ENSYM("DEGREE",#SC,MK_REC(#SC))]]←1;
	SCALAR:VALUE[SYMBOL:OBJECT[DEGRES←ENSYM("DEGREES",#SC,MK_REC(#SC))]]←1;


	VECTOR:XC[SYMBOL:OBJECT[XHAT←ENSYM("XHAT",#VT,V_XHAT←MK_REC(#VT))]]←1;
	VECTOR:YC[SYMBOL:OBJECT[YHAT←ENSYM("YHAT",#VT,V_YHAT←MK_REC(#VT))]]←1;
	VECTOR:ZC[SYMBOL:OBJECT[ZHAT←ENSYM("ZHAT",#VT,V_ZHAT←MK_REC(#VT))]]←1;
	NILVECT←ENSYM("NILVECT",#VT,V_NILVECT←MK_REC(#VT));

	WORLD←ENSYM("STATION",#FR,F_WRLD←MK_REC(#FR));
	FRAME:PNAME[F_WRLD]←"STATION";
	BARM←ENSYM("BARM",#FR,F_BARM←MK_REC(#FR));
	FRAME:PNAME[F_BARM]←"BARM";
	YARM←ENSYM("YARM",#FR,F_YARM←MK_REC(#FR));
	FRAME:PNAME[F_YARM]←"YARM";
 	BPARK←ENSYM("BPARK",#FR,F_BPARK←MK_REC(#FR));
	FRAME:PNAME[F_BPARK]←"BPARK";
 	YPARK←ENSYM("YPARK",#FR,F_YPARK←MK_REC(#FR));
	FRAME:PNAME[F_YPARK]←"YPARK";
 	BGRASP←ENSYM("BGRASP",#FR,F_BGRASP←MK_REC(#FR));
	FRAME:PNAME[F_BGRASP]←"BGRASP";
 	POINTER←ENSYM("POINTER",#FR,F_POINTER←MK_REC(#FR));
	FRAME:PNAME[F_POINTER]←"POINTER";

	NILROTN←ENSYM("NILROTN",#RT,R_NILROTN←MK_REC(#RT));
	NILTRANS←ENSYM("NILTRANS",#TR,T_NILTRANS←MK_REC(#TR));

ARRTRAN(FRAME:XF[F_BPARK],TRANS:XF[DOTREXP(0,180,0,43.53125,56.855,9.95875)]);
ARRTRAN(FRAME:XF[F_YPARK],TRANS:XF[DOTREXP(0,180,0,40,14,9)]);
ARRTRAN(FRAME:XF[F_BGRASP],TRANS:XF[DOTREXP(-180,180,0,0,0,0)]);
ARRTRAN(FRAME:XF[F_POINTER],TRANS:XF[DOTREXP(-.417,13.2,-5.173,.0121,.119,3.75)]);

AFX_NODE(F_BARM,F_WRLD,#NRGLK);
AFX_NODE(F_YARM,F_WRLD,#NRGLK);
AFX_NODE(F_BGRASP,F_BARM,#RGDLK);
AFX_NODE(F_POINTER,F_BARM,#RGDLK);
F_ARM←F_BARM;
END;




END;